/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package propres;
import java.util.*;
/**
 *
 * @author neochange
 */
public class CtrlDominioalimento {

    private alimento A;
    private estrucalim estructura;
    private g_disco gestord;
    
    
public CtrlDominioalimento(){
A = new alimento();
estructura = new estrucalim();
gestord= new g_discoa();
}


public List<String> intalimento(String[] caix, boolean[] G, boolean[] Q) throws Exception
{

A = new alimento();    
A.Set_Nombre(caix[0]);
A.Set_Grasas(Integer.parseInt(caix[1]));
A.Set_Hidratos(Integer.parseInt(caix[2]));
A.Set_Proteinas(Integer.parseInt(caix[3]));
A.Set_Calorias(Integer.parseInt(caix[4]));
A.Set_clasificacion(caix[5]);
A.Set_Vit_min(caix[6]);

Date a = new Date(Integer.parseInt(caix[9]),Integer.parseInt(caix[8]),Integer.parseInt(caix[7]));
Date b = new Date(Integer.parseInt(caix[12]),Integer.parseInt(caix[11]),Integer.parseInt(caix[10]));
Interval I = new Interval(a,b);
A.Set_Temp(I);

A.Set_Precio(Integer.parseInt(caix[14]));

int num=1;
int res=0;
for(int i=4;i>=0;i--)  // comprovamos en que comida se puede usar
{
if(G[i]){ res+=num; } 
num*=10;
}

A.Set_comida(res);

num=1;
res=0;
for(int i=2;i>=0;i--)  // comprovamos que tipo alimento es prin, sec,acomp
{
if(Q[i]){ res+=num;}
num*=10;
}


A.Set_tipopla(res);

estructura.añadir_alimento(A);


List<String> J = new ArrayList();
for(int y=0;y<14;y++){
J.add("");
}

return J;
}

public List<String> modalimento(String[] caix, boolean[] G, boolean[] Q) throws Exception
{

A= new alimento();
A.Set_Nombre(caix[0]);
A.Set_Grasas(Integer.parseInt(caix[1]));
A.Set_Hidratos(Integer.parseInt(caix[2]));
A.Set_Proteinas(Integer.parseInt(caix[3]));
A.Set_Calorias(Integer.parseInt(caix[4]));
A.Set_Precio(Integer.parseInt(caix[14]));
A.Set_clasificacion(caix[5]);
A.Set_Vit_min(caix[6]);

Date a = new Date(Integer.parseInt(caix[9]),Integer.parseInt(caix[8]),Integer.parseInt(caix[7]));
Date b = new Date(Integer.parseInt(caix[12]),Integer.parseInt(caix[11]),Integer.parseInt(caix[10]));
Interval I = new Interval(a,b);
A.Set_Temp(I);

int num=1;
int res=0;
for(int i=4;i>=0;i--)  // comprobamos en que comida se puede usar
{
if(G[i]) res+=num;
num*=10;
}

A.Set_comida(res);

num=1;
res=0;
for(int i=2;i>=0;i--)  // comprobamos que tipo alimento es prin, sec,acomp
{
if(Q[i]) res+=num;
num*=10;
}

A.Set_tipopla(res);    
    
estructura.modificar_alimento(A);

List<String> J = new ArrayList();
for(int y=0;y<14;y++){
J.add("");
}

return J;
}

public List<String> elialimento(String no) throws Exception
{

    estructura.eliminar_alimento(no);
    
List<String> J = new ArrayList();
for(int y=0;y<14;y++){
J.add("");
}

return J;    
}

public List<String> consalimento(String no) throws Exception
{

    A = estructura.consultar_alimento(no);
    
        
    List<String> U = new ArrayList();
    
    if(A!=null){
    U.add(A.Get_Nombre());
    U.add(Integer.toString(A.Get_Grasas()));
    U.add(Integer.toString(A.Get_Hidratos()));
    U.add(Integer.toString(A.Get_Proteinas()));
    U.add(Integer.toString(A.Get_Calorias()));
    U.add(A.Get_clasificacion());
    U.add(A.Get_Vit_min());
    
    Date in = new Date();
    Date fi = new Date();
    in = A.Get_Temp().Get_data_in();
    fi = A.Get_Temp().Get_data_fi();
    // hay que pasar el Intervalo a String U[8,9,10,11,12,13]
    
    U.add(Integer.toString(in.getDate()));   
    U.add(Integer.toString(in.getMonth()));
    U.add(Integer.toString(in.getYear()));
    U.add(Integer.toString(fi.getDate()));  
    U.add(Integer.toString(fi.getMonth()));
    U.add(Integer.toString(fi.getYear()));
  
    U.add(Integer.toString(A.Get_Precio()));
    
    U.add(Integer.toString(A.get_comida()));
   
    U.add(Integer.toString(A.Get_tipopla()));
   
    
    }
    else{
    
        U.add("El alimento no esta en la estructura");
        int v = 0;
        while(v < 16){
            U.add("");
            v++;
        }
    }
return U;    
}

public List<String> listalimentos() throws Exception
{
    
List<alimento> L = new ArrayList();
L = estructura.consultar_alimentos();    

List<String> K = new ArrayList();

for (int j=0; j<15;j++){
    K.add("");
}

if(L.isEmpty())
{
    K.add("No hay alimentos en el sistema");
}
else{    
    for(int r=0;r<L.size();r++)
    {
        K.add(L.get(r).Get_Nombre()+'\n');
    }
}


return K;
}

public List<alimento> consult_alimentos() throws Exception
{
List<alimento> L = new ArrayList();
L = estructura.consultar_alimentos();    
return L;
}


public List<String> guardar(String path) throws Exception
{
gestord.guardar_objecte2(estructura,path);

List<String> J = new ArrayList();
for(int y=0;y<14;y++){
J.add("");
}

return J;
}

public List<String> cargar(String path) throws Exception
{

List<alimento> L = new ArrayList();
L = estructura.consultar_alimentos();    

if(L.isEmpty()){    
    estructura=(estrucalim)gestord.llegir_objecte2(path);
}
else{
    estructura=(estrucalim)gestord.llegir_objecte2(path);
    int u=0;
    while(u < L.size()){
    estructura.añadir_alimento(L.get(u));
    u++;
    }
}

List<String> J = new ArrayList();
for(int y=0;y<14;y++){
J.add("");
}
J.add("Alimentos cargados correctamente");

return J;
}

public estrucalim get_estruc(){
return estructura;
}
    
    
}
